package com.jaws.core.common.excel.function;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.Date;

import org.joda.time.DateTime;
import org.springframework.expression.spel.standard.SpelExpressionParser;

/**
 * <pre>
 * 内部函数库，使用EL表达式在excel模板中调用。
 * 示例：
 * 
 * </pre>
 * 
 * #{ T(InternalUtils).fmtDate(beginTime,'yyyy-MM-dd') }
 * 
 * @author maojian
 * @date 2018-05-21 16:40:03
 * @since v1.0.0
 */
public class InternalUtils {

	/**
	 * 日期格式化
	 * 
	 * @author maojian
	 * @date 2018-05-22 11:36:57
	 * @since v1.0.0
	 * @param date
	 * @param pattern
	 * @return
	 */
	@JawsExcelFuncAnno("jawsDate")
	public static String jawsDate(Date date, String pattern) {
		DateTime dt = new DateTime(date.getTime());
		return dt.toString(pattern);
	}

	/**
	 * 金额千分位
	 * 
	 * @author maojian
	 * @date 2018-05-22 11:36:54
	 * @since v1.0.0
	 * @param amount
	 * @param pattern
	 * @return
	 */
	@JawsExcelFuncAnno("jawsAmt")
	public static String jawsAmt(BigDecimal amount, String pattern) {
		DecimalFormat df = new DecimalFormat(pattern);
		return df.format(amount);
	}

	/**
	 * 数学函数
	 * 
	 * @author maojian
	 * @date 2018-05-22 16:26:22
	 * @since v1.0.0
	 * @param exp
	 * @return
	 */
	@JawsExcelFuncAnno("jawsMath")
	public static String jawsMath(String exp) {
		return new SpelExpressionParser().parseExpression(exp).getValue(String.class);
	}
}
